/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 邓大帅
 * Date: 2024-01-05
 * Time: 9:31
 */
public class JString {
    public static void main(String[] args) {
//      三目运算符 布尔表达式 ？ 表达式1 : 表达式2
    }
    public static void main11(String[] args) {
//      << 左移 >> 右移 都属算术移位，可以参考计组原码反码补码算术移位规则
        System.out.println(-1 >>> 1);
//      >>> 无符号右移 不存在无符号左移
    }
    public static void main10(String[] args) {
//      & 按位与 | 按位或 ^ 按位异或 ~按位取反
//      1.相同的数字异或等于0 2.0异或任何数都等于这个数
    }
    public static void main9(String[] args) {
//      & 与 && 的区别在于&不会短路 | 与 || 同理
    }
    public static void main8(String[] args) {
        int a = 10;
//      System.out.println(3 < a < 100);3 < a等于ture ture < 100无法比较报错
    }
    public static void main7(String[] args) {
        int a = 10;
        int b = a++;//b = a; a = a + 1;
        int c = ++a;//a = a + 1; c = a;
        System.out.println(b);
        System.out.println(c);
//      不管是a++还是++a最终都会让a的值加一

//      涉及Java的汇编知识，不做深入探究
        int i = 10;
        i = i++;
        System.out.println(i);//10
    }
    public static void main6(String[] args) {
        int a = 1;
        a += 1;
        System.out.println(a);

        short b = 12;//声明变量时不能赋值超过本身数据类型的范围会报错
//      b = b + 2;  b+2会整型提升，赋值给short会报错，若是强转需要承担风险
        b += 2;//相当于自动进行了强转
//      b += 20000000  当数据类型加上一个超过自己表示范围的数不会报错，计算结果会溢出
        System.out.println(b);
    }
    public static void main5(String[] args) {
        System.out.println(10%3);//1
        System.out.println(10%-3);//1
        System.out.println(-10%3);//-1
        System.out.println(-10%-3);//-1
//      Java中允许小数做取余计算
        System.out.println(11.5%2);//1.5
    }
    public static void main4(String[] args) {
        System.out.println(5/2);//2
        System.out.println((float)5/2);//2.5
        System.out.println(5/(float)2);//2.5
        System.out.println((float)(5/2));//2.0
    }
    public static void main3(String[] args) {
        String str = "12345";
        int a = Integer.valueOf(str);
        System.out.println(a+1);
        String str1 = "12.5";
        double b = Double.valueOf(str1);
        System.out.println(b);
    }
    public static void main2(String[] args) {
        int a = 12345;
//      某种类下的valueof方法用于将其他数据类型转换为该类的数据类型
        String ret  = String.valueOf(a);
        System.out.println(ret);
        System.out.println(a);
    }
    public static void main1(String[] args) {
        String a = "hello ";
        String b = "world";
//      字符串相加意味着拼接
        System.out.println(a+b);
        int c = 10;
        int d = 20;
//      字符串加任何数据类型结果都是字符串
        System.out.println("c = "+ c);
        System.out.println("c + d = "+c+d);
//      运算规则，从左至右，括号内优先
        System.out.println("c + d = "+(c+d));
    }
}
